A software application may be composed of multiple components or objects, such as modules, libraries, functions, configuration files, and so forth. In some environments, executable components may be loaded at runtime, and/or may be loaded dynamically, upon demand. Although some application components may remain static over time, other components may be changed more frequently to address bugs and to add or change features.
In certain situations, it may be desired to run a particular application on a large number of computers. For example, an enterprise may develop an application for use by employees or customers, and the application may be distributed to the computers of such employees or customers. As another example, an online service may be implemented by a large number of computers acting in concert, and each of the computers may be configured to run an instance of the same program.
Vendors and developers of widely distributed applications may desire to provide frequent application updates so that users and customers are exposed to the latest features and application releases.